//
//  AppDelegate+Config.m
//  Partner
//
//  Created by jackyu on 2017/4/12.
//  Copyright © 2017年 jackyu. All rights reserved.
//

#import "AppDelegate+Config.h"


#import "DataBaseTool.h"
@implementation AppDelegate (Config)

+(void)load
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        
        // 收集崩溃信息
        NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
        
    });
}

//数据容错开启(发布后调用)
-(void)faultTolerance
{
#if !DEBUG
    [AvoidCrash becomeEffective];//所有支持避免异常的数据类型统一处理
    //[NSMutableArray/NSArray avoidCrashExchangeMethod];//支持避免异常的数据类型单独处理
    //监听通知:AvoidCrashNotification, 获取AvoidCrash捕获的崩溃日志的详细信息
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dealwithCrashMessage:) name:AvoidCrashNotification object:nil];
#endif
}
#pragma mark - 数据容错后收集的数据崩溃信息
-(void)dealwithCrashMessage:(NSNotification *)notification
{
    //所有的信息都在userInfo中
    //在这里收集相应的崩溃信息进行相应的处理(比如传到自己服务器)
    NSLog(@"%@",notification.userInfo);
    
}


#pragma mark - 崩溃信息收集(debug时捕获崩溃信息)
void UncaughtExceptionHandler(NSException *exception)
{
    NSArray *arr= [exception callStackSymbols];//得到当前调用栈信息
    NSString*reason = [exception reason];//崩溃的原因
    NSString*name = [exception name];//异常类型
    
    NSLog(@" /*********** 异常类型 : %@ \n 崩溃原因 : %@ \n 当前调用栈信息: %@ ************/ ", name, reason, arr);
    
}

- (void)initDataBase{


    [[DataBaseTool  shareInstance] createDataBase];
}

@end
